[t:/]$ 지식_

아파치 모듈의 config를 어디에 넣을 것인가

2014/11/12

1. 컴파일 타임에 넣기

컨피그 파일등을 두고 파싱을 하든 지지고 볶든 -D 매크로를 쓰든 등등 해서 컴파일 타임때 넣는 방식이다. 배포 사고가 발생할 확률이 있다. 보안 측면에서 권장하지 않는다. 유연하지 않다.

2. 런타임에서 컨피그 파일을 읽기

얼마되진 않지만 file io가 발생한다. 파싱 부하도 있것다. 뭐 별건 아니다. 그렇다해도 아파치 모듈을 짜는 입장에서는 좀 별로다. 초당 수천 요청이 오는데 그 때마다 컨피그를 읽기 위해서 file 시스템 콜이 발생한다는 것은 좀 찜찜하다. 잘 짜면 실시간 반영이 가능하다.

3. 아파치 설정에서 읽기

깨끗하지만 아파치 설정 관련 코딩 노가다량이 좀 생긴다. 아파치를 재시동하지 않으면 실시간 반영은 어렵다.

5. 공유 메모리에 넣기

공유 메모리에 컨피그를 넣는 임포터를 만든다. 속도도 가장 빠를 것이다. 뽄새는 나는데 영 번잡스럽다.

6.

현실적인 대안이라면 아파치 설정에서 읽는 것이 괜찮은 것 같다. 또는 컨피그 파일과 조합하여 아파치 설정에서 파일명을 지정하는 것이다. 즉 아파치 설정에서 이렇게 할 수 있겠다.

REL_MODE=debug.cfg // 디버그 모드일때

REL_MODE=biz.cfg // 상용 모드 일 때

나는 그냥 귀찮아서 아파치 설정에서 읽는 것을 택하려고 한다.

대신 환경변수는 모아놓는다. 즉 env_local.cfg, env_dev.cfg, env.biz.cfg 를 생성하고 심볼릭 링크로 env.cfg를 생성하여 타겟팅한다. 컨피그 파일에는 디비 주소, 암호 등을 설정할 수 있다.

그리고 httpd.conf에 다음과 같이 처리한다.

Include env.cfg









[t:/] is not "technology - root". dawnsea, rss